const url = require('url')

function changeRes(res) {
  res.send = (data) => {
    res.writeHead(200, {'Content-Type' : 'text/html;charset="utf-8"'})
    res.end(data)
  }
  
  /** 相当于
    function send(data) {
      res.writeHead(200, {'Content-Type' : 'text/html;charset="utf-8"'})
      res.end(data)
    } 
   */
}

let server = () => {
  let G = []
  // 把get和post分开
  G._get = {}
  G._post = {}

  let app = function(req, res) {
    // 扩展res方法
    changeRes(res)

    let pathname = url.parse(req.url).pathname
    // 获取请求类型
    let method = req.method.toLowerCase()
    if (G['_'+method][pathname]) {
      if (method === 'get') {
        G._get[pathname](req, res) // 执行方法
      } else {
        // post请求 获取post的数据，将数据绑定到req.body
        let postData = ''
        req.on('data', (chunk) => {
          postData += chunk
        })
        req.on('end', () => {
          req.body = postData
          G._post[pathname](req, res) // 执行方法
        })
      }
    } else {
      res.writeHead(404, { 'Content-Type': 'text/html;charset="utf-8"' });
      res.end('页面不存在');
    }
  }

  app.get = function(str, callback) {
    //注册方法
    G._get[str] = callback
  }

  app.post = function(str, callback) {
    //注册方法
    G._post[str] = callback
  }

  return app
}

module.exports = server()